<?php 

//名为PHP或php的命名空间，以及以这些名字开头的命名空间（例如PHP\Classes）被保留用作语言内核使用，而不应该在用户空间的代码中使用
namespace MynameSpace1 {
	
 class Clean 
  {
  	  	function remove() {
  		    echo __CLASS__,"  ",__FUNCTION__,"<br>";
  	   }
  }


}
//在实际的编程实践中，非常不提倡在同一个文件中定义多个命名空间。这种方式的主要用于将多个 PHP 脚本合并在同一个文件中

//子命名空间，类似于一个目录
namespace MynameSpace2\CleanClass {
	//如果要在一个命名空间中使用另一个文件命名空间的代码，需要导入
	//允许通过别名引用或导入外部的完全限定名称，是"命名空间"的一个重要特征(只能在命名空间中使用,外部调用这个别名也不行)
  //PHP 命名空间支持 有两种使用别名或导入方式：为"类"名称使用别名，或为"命名空间名称"使用别名。注意PHP不支持导入函数或常量
  //关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符
 use MynameSpace1\Clean as AliasClean;	
 class Clean 
  {
  	  function remove() {

  		   echo __CLASS__,"  ",__FUNCTION__,"   ",strlen("string"),"<br>";
  	  }
  }
  function funcname () {

  	echo "我是空间命名中的方法","  ",__FUNCTION__,"<br>";
  }
  const constantVar = "constantVar";

//常量 __NAMESPACE__ 在动态创建名称时很有用,表示当前命名空间的名字
//关键字 namespace 可用来显式访问"当前"命名空间或"子"命名空间中的元素。它等价于类中的 self 操作符
function getFuncName ($name) {
   $a = __NAMESPACE__."\\".$name;
   $b = new AliasClean;//打印出的是MynameSpace1的变亮信息
    var_dump($b);
    // $c = new namespace\AliasClean;错误
    // var_dump($c);
	return $a;
}

}




 ?>